package com.example.day3.stream;

import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.IntStream;

/**
 * <h3>生成流</h3>
 * <p>不用现有数据生成 Stream 对象</p>
 * <ol>
 *     <li>简单生成 IntStream.range(..)</li>
 *     <li>依赖上一个值生成当前的值 IntStream.iterate(...)</li>
 *     <li>不依赖上一个值生成当前的值 IntStream.generate(...)</li>
 * </ol>
 */
public class C06GenerateTest {
    public static void main(String[] args) {
        // 1. IntStream.range

        // 含头不含尾
//        IntStream.range(1, 10).forEach(System.out::println);
        // 含头含尾
//        IntStream.rangeClosed(1, 10).forEach(System.out::println);

        // 2. IntStream.iterate 生成 1 3 5 7 9 ... 奇数数列
        // 可以根据上一个元素值生成当前元素
//        IntStream.iterate(1, x -> x + 2).limit(10).forEach(System.out::println);

//        IntStream.iterate(1, x -> x <= 9, x -> x + 2).forEach(System.out::println);

        // 3. IntStream.generate
        IntStream.generate(() -> ThreadLocalRandom.current().nextInt(100))
                .limit(5)
                .forEach(System.out::println);

        ThreadLocalRandom.current().ints(5, 0, 100)
                .forEach(System.out::println);
        ;
    }
}
